/* 
 * File:   Exception.h
 * Author: Zeeno
 *
 * Created on 3. březen 2012, 10:49
 */

#ifndef EXCEPTION_H
#define	EXCEPTION_H

#include <exception>

/*
 * Hlavní soubor pro vyjímky a chyby
 * 
 * Jak je přesně implementovat? Bude jich totiž více než v klasickém C++, v
 * tomto případě bych se možná nechal inspirovat Javou, kde víceméně každá
 * vyjímka má vlastní třídu a tím pádem se záapis zjednoduší, protože nemusíte
 * odchytávat Exception a pak pomocí if-else zjišťovat o kterou vyjímku se jedná
 * ale stačí vám zachytnout NullPointerException a hned víte co za chybu to je
 * a pokud chcete, tak zachytíte i předka Exception...
 * 
 * Taky by byl dobré navrhnout, jak se poprat s věcmi jako terminate() a 
 * unexpected(). další klíčová slova: set_unexpected(); set_terminate();
 * 
 * hlavní je provázanost s c++, které již nějaké ty vyjímky implementuje a ve
 * svých knihovnách std je používá, konkrétně se jedná o tuto hierarchii vyjímek
 * 
 * exception
 * ->   logic_error
 *      ->      domain_error
 *      ->      invalid_argument
 *      ->      lenght_error
 *      ->      out_of_range
 *      ->      bad_cast - při špatném volání dynamic_cast
 *      ->      bad_typeid
 * ->   runtime_error
 *      ->      range_error
 *      ->      overflow_erroe
 *      ->      underflow_error
 *      ->      bad_alloc
 * ->   bad_exception
 * 
 * prosím o připomínkování
 */

namespace vertigo{
    class Exception : public std::exception{
    };
}


#endif	/* EXCEPTION_H */

